//package com.mo.tools.config.redis;
//
//import org.apache.commons.lang3.ObjectUtils;
//import org.redisson.Redisson;
//import org.redisson.api.RedissonClient;
//import org.redisson.config.ClusterServersConfig;
//import org.redisson.config.Config;
//import org.redisson.config.SingleServerConfig;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@Configuration
//public class RedissonConfiguration {
//    @Autowired
//    private RedisProperties redisProperties;
//
//    @Bean
//    public RedissonClient redisson() {
//        //  单机模式
//        if (redisProperties.getCluster() == null) {
//            Config config = new Config();
//            SingleServerConfig singleServerConfig = config.useSingleServer()
//                    .setAddress("redis://" + redisProperties.getHost() + ":" + redisProperties.getPort());
//            if (!ObjectUtils.isEmpty(redisProperties.getPassword())) {
//                singleServerConfig.setPassword(redisProperties.getPassword());
//            }
//            if (ObjectUtils.isNotEmpty(redisProperties.getDatabase())) {
//                singleServerConfig.setDatabase(redisProperties.getDatabase());
//            }
//            if (ObjectUtils.isNotEmpty(redisProperties.getLettuce().getPool().getMinIdle())) {
//                singleServerConfig.setConnectionMinimumIdleSize(redisProperties.getLettuce().getPool().getMinIdle());
//            }
//            if (ObjectUtils.isNotEmpty(redisProperties.getLettuce().getPool().getMaxActive())) {
//                singleServerConfig.setConnectionPoolSize(redisProperties.getLettuce().getPool().getMaxActive());
//            }
//            return Redisson.create(config);
//        }else {
//            //  集群模式
//            List<String> nodesList = redisProperties.getCluster().getNodes();
//            List<String> clusterNodes = new ArrayList<>();
//            for (String node : nodesList) {
//                String newNode = "redis://" + node;
//                clusterNodes.add(newNode);
//            }
//            Config config = new Config();
//            ClusterServersConfig serverConfig = config.useClusterServers()
//                    .addNodeAddress(clusterNodes.toArray(new String[clusterNodes.size()]));
//            if (!ObjectUtils.isEmpty(redisProperties.getPassword())) {
//                serverConfig.setPassword(redisProperties.getPassword());
//            }
//            return Redisson.create(config);
//        }
//    }
//}
